package co.com.desarrollo.pedidos.dao.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import co.com.desarrollo.pedidos.dao.PedidoGrupoDAO;
import co.com.desarrollo.pedidos.entities.PedidoGrupo;

@Repository("pedidoGrupoDAO")
public class JpaPedidoGrupoDAOImpl implements PedidoGrupoDAO {

	@PersistenceContext
	private EntityManager entityManager;
	
	@Transactional(readOnly = true)
	public List<PedidoGrupo> findAll() {
		return entityManager.createQuery("from PedidoGrupo",PedidoGrupo.class).getResultList();
	}

	@Transactional(readOnly = true)
	public PedidoGrupo findById(long pedidoGrupoId) {		
		return entityManager.find(PedidoGrupo.class, pedidoGrupoId);
	}

	@Transactional
	public PedidoGrupo store(PedidoGrupo pedidoGrupo) {
		return entityManager.merge(pedidoGrupo);
	}

	@Transactional(readOnly = true)
	public List<PedidoGrupo> findPedidosGrupoByEstadoPedido(long estadoPedidoId) {
		return entityManager.createQuery("from PedidoGrupo pg where pg.estadoPedido.idestadoPedido = '"+estadoPedidoId+"'", PedidoGrupo.class).getResultList();
	}

	@Transactional(readOnly = true)
	public PedidoGrupo findByStatusTienda(int estado, long idtienda) {
		try {
			return entityManager.createQuery("from PedidoGrupo pg where pg.estadoPedido.idestadoPedido = '"+estado+"' and pg.tienda.idtienda = '"+idtienda+"'", PedidoGrupo.class).getSingleResult();
		} catch (NoResultException e) {
			return null;
		}
	}

}
